package com.crawler.crawler.service.impl;

import com.crawler.crawler.domain.MagnetUrl;
import com.crawler.crawler.mapper.MagnetUrlMapper;
import com.crawler.crawler.service.IMagnetUrlService;
import org.openqa.selenium.By;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * 链接地址Service业务层处理
 * 
 * @author XUEH
 * @date 2020-04-26
 */
@Service
public class MagnetUrlServiceImpl implements IMagnetUrlService
{
    //.baidu.com
    private String BAIDUID="1013153631A72D4BF476023FCCD04091:FG=1";
    //.baidu.com
    private String BDUSS="01VdEZmUUtxRTFNZzZuRFhpVlViQW1MZEVGeW5wOGRCZWs3M3QwSFhVM0xTTDFlSVFBQUFBJCQAAAAAAAAAAAEAAADEEaw7y6vX03dra2trAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMu7lV7Lu5VeY";
    //.pan.baidu.com
    private String STOKEN="d9c113d193599d7ef4c9a8dc78773dc22c20a152b82bf5141d55f37d26d3fd39";

    @Autowired
    private MagnetUrlMapper magnetUrlMapper;


    /**
     * 查询链接地址
     * 
     * @param id 链接地址ID
     * @return 链接地址
     */
    @Override
    public MagnetUrl selectMagnetUrlById(Long id)
    {
        return magnetUrlMapper.selectMagnetUrlById(id);
    }

    /**
     * 查询链接地址列表
     * 
     * @param magnetUrl 链接地址
     * @return 链接地址
     */
    @Override
    public List<MagnetUrl> selectMagnetUrlList(MagnetUrl magnetUrl)
    {
        return magnetUrlMapper.selectMagnetUrlList(magnetUrl);
    }

    /**
     * 新增链接地址
     * 
     * @param magnetUrl 链接地址
     * @return 结果
     */
    @Override
    public int insertMagnetUrl(MagnetUrl magnetUrl)
    {
        return magnetUrlMapper.insertMagnetUrl(magnetUrl);
    }

    /**
     * 修改链接地址
     * 
     * @param magnetUrl 链接地址
     * @return 结果
     */
    @Override
    public int updateMagnetUrl(MagnetUrl magnetUrl)
    {
        return magnetUrlMapper.updateMagnetUrl(magnetUrl);
    }

    /**
     * 批量删除链接地址
     * 
     * @param ids 需要删除的链接地址ID
     * @return 结果
     */
    @Override
    public int deleteMagnetUrlByIds(Long[] ids)
    {
        return magnetUrlMapper.deleteMagnetUrlByIds(ids);
    }

    /**
     * 删除链接地址信息
     * 
     * @param id 链接地址ID
     * @return 结果
     */
    @Override
    public int deleteMagnetUrlById(Long id)
    {
        return magnetUrlMapper.deleteMagnetUrlById(id);
    }

    /**
     * 转存链接
     * @param
     */
    @Override
    public int baiduSave(){

        System.setProperty("webdriver.chrome.driver", "D:\\E\\tool\\chromedriver.exe");// chromedriver服务地址
        WebDriver driver = new ChromeDriver(); // 新建一个WebDriver 的对象，但是new 的是谷歌的驱动

        try {
            driver.get("https://pan.baidu.com/s/1Be3ho-tX6MMeypT8FigfoA"); // 打开指定的网站
            /**
             * WebDriver自带了一个智能等待的方法。 dr.manage().timeouts().implicitlyWait(arg0, arg1）；
             * Arg0：等待的时间长度，int 类型 ； Arg1：等待时间的单位 TimeUnit.SECONDS 一般用秒作为单位。
             */
            driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

            //过期时间
            LocalDate extime=LocalDate.of(2020,4,30);
            Date date=Date.from(extime.atStartOfDay(ZoneId.systemDefault()).toInstant());


            //设置cookie 登录百度云
            driver.manage().addCookie(new Cookie("BAIDUID",BAIDUID,".baidu.com","/",date ,false,false));
            driver.manage().addCookie(new Cookie("BDUSS",BDUSS,".baidu.com","/",date ,false,false));
            driver.manage().addCookie(new Cookie("STOKEN",STOKEN,".pan.baidu.com","/",date ,false,false));

            driver.findElement(By.linkText("网盘")).click();
            Thread.sleep(2000);
            driver.findElement(By.className("know-button")).click();
            //得到未保存的数据
            MagnetUrl magnetUrl1=new MagnetUrl();
            magnetUrl1.setIsSave(0);
            List<MagnetUrl> list=selectMagnetUrlList(magnetUrl1);
            Thread.sleep(1000);
            driver.findElement(By.linkText("离线下载")).click();
            for(int k=0;k<list.size();k++){
                Thread.sleep(1000);
                driver.findElement(By.linkText("新建链接任务")).click();
                Thread.sleep(1000);
                driver.findElement(By.id("share-offline-link")).sendKeys(list.get(k).getMagnetUrl());
                Thread.sleep(1000);
                driver.findElement(By.linkText("更改")).click();
                Thread.sleep(2000);

                driver.findElement(By.xpath("//span[@data-file-path='/mentalist']")).click();
                //点击确定，保存
                Thread.sleep(2100);
                driver.findElement(By.linkText("确定")).click();
                Thread.sleep(10100);
                driver.findElement(By.linkText("确定")).click();
                //保存数据
                MagnetUrl saveMagnet=new MagnetUrl();
                saveMagnet.setId(list.get(k).getId());
                saveMagnet.setIsSave(1);
                updateMagnetUrl(saveMagnet);
                Thread.sleep(15000);

            }

        } catch (Exception e) {
            e.printStackTrace();

        }

        return 1;
    }
}
